const express = require("express");
const router = express.Router();
const UserModel = require('../db/model/userModel');
const jwt = require("jsonwebtoken");
/**
 * @api {post} /register 用户注册
 * @apiName register
 * @apiGroup User
 *
 * @apiParam {String} user 用户name
 * @apiParam {String} pass 用户密码

 * @apiSuccess {Number} code code码 0  成功 -1 失败.
 * @apiSuccess {String} msg  返回信息.
 * @apiSuccess {Arrary} list  用户列表.
 */
// 定义注册接口
router.post('/register', async  (req, res) => {
  // 接受数据
  const { user, pass } = req.body;
  // 判断用户名是否重复
  const count= await UserModel.find({ user }).count()
  if(count) {
    return res.send({ codo:-1, msg: "用户名重复"})
  }
  const insertData = await UserModel.insertMany({user,pass})
  if(insertData && insertData.length > 0 ) {
    return  res.send({ codo:0, msg: "注册成功"})
  }
  // 返回数据
  res.send({ codo:-2, msg: "注册失败"})
});

/**
 * @api {get} /login 用户登录
 * @apiName login
 * @apiGroup User
 *
 * @apiParam {String} user 用户name
 * @apiParam {String} pass 用户密码

 * @apiSuccess {Number} code code码 0  成功 -1 失败.
 * @apiSuccess {String} msg  返回信息.
 * @apiSuccess {Arrary} list  用户列表.
 */
// 用户登录
router.get('/login', async (req, res) => {
  // 接受数据
  const { user, pass } = req.query;
  const userInfo = await UserModel.find({ user, pass })
  console.log(userInfo)
  if(userInfo && userInfo.length ) {
    console.log(userInfo)
    // 从用户信息里取出 除密码外的其他参数
    const { user, _id} = userInfo[0];
    const token = jwt.sign({user,_id, ctime:(new Date()).getTime()},"2216", { expiresIn: 60*60*24 })
    const updateData = await UserModel.findByIdAndUpdate(_id,{token})
    console.log(updateData)
    return res.send({ codo:0, msg: "登录ok", token, user,_id })
  }
  // 返回数据
  res.send({ codo:-2, msg: "登录失败"})
  
});

/**
 * @api {post} /creatUser 添加用户信息
 * @apiName creatUser
 * @apiGroup User
 *
 * @apiParam {String} user 用户名称
 * @apiParam {String} img 用户头像
 * @apiParam {String} time 用户发布时间
 * @apiParam {String} desc 用户发布内容
 * @apiParam  {String} title 用户发布主题

 * @apiSuccess {Number} code code码 0  成功 -1 失败.
 * @apiSuccess {String} msg  返回信息.
 * @apiSuccess {Arrary} list  用户列表.
 */
 router.post('/creatUser', async (req, res) => {
  // 接受数据
  const { user, img,time,desc,title } = req.body;
  const updateInfo = await UserModel.create({  user, img,time,desc,title })
console.log(updateInfo)
  if(updateInfo) {
    return res.send({ codo:0, msg: "用户添加success"})
  }
  return res.send({ codo:-1, msg: "用户添加defeat"})
});

/**
 * @api {post} /updateUser 修改用户信息
 * @apiName updateUser
 * @apiGroup User
 *
 * @apiParam {String} user 用户名称
 * @apiParam {String} img 用户头像
 * @apiParam {String} time 用户发布时间
 * @apiParam {String} desc 用户发布内容
 * @apiParam  {String} title 用户发布主题
 *
 * @apiSuccess {Number} code code码 0  成功 -1 失败.
 * @apiSuccess {String} msg  返回信息.
 * @apiSuccess {Arrary} list  用户列表.
 */
 router.post('/updateUser', async (req, res) => {
  // 接受数据
  const { user, img,time,desc,title } = req.body;
  const updateInfo = await UserModel.findByIdAndUpdate(id,{user, img,time,desc,title})
  console.log(updateInfo)
  if(updateInfo) {
    return res.send({ codo:0, msg: "用户修改ok"})
  }
  return res.send({ codo:-1, msg: "用户修改失败"})

});


/**
 * @api {post} /deluser 删除用户信息
 * @apiName deluser
 * @apiGroup User
 *
 * @apiParam {String} id 用户id

 * @apiSuccess {Number} code code码 0  成功 -1 失败.
 * @apiSuccess {String} msg  返回信息.
 * @apiSuccess {Arrary} list  用户列表.
 */
// 删除用户数据
router.post('/deluser', async (req, res) => {
  // 接受数据
  const { id } = req.body;
  const delInfo = await UserModel.findByIdAndDelete(id)
  if(delInfo) {
    return res.send({ codo:0, msg: "删除ok"})
  }
  return res.send({ codo:-1, msg: "删除失败"})

});

/**
 * @api {get} /getUsers 查询用户信息
 * @apiName getUsers
 * @apiGroup User
 *
 * @apiParam {Number} page 页码数.
 * @apiParam {Number} pageSize 每页条数.
 *
 * @apiSuccess {Number} code code码 0  成功 -1 失败.
 * @apiSuccess {String} msg  返回信息.
  * @apiSuccess {Arrary} list  用户列表.
 */
// 查询所有的用户信息
router.get('/getUsers',async (req,res) => {
  const { page =1,pageSize =4} = req.query
  const list =await UserModel.find().limit(pageSize).skip((page-1)*pageSize);
  if(list) {
    return res.send({ code:0,msg:"查询ok",list})
  }
  return res.send({ code:-1,msg:"查询nook"})
})

module.exports = router;